#ifndef FRACTAL_H
#define FRACTAL_H

#include "expression/expression.hpp"
#include "expression/variable.hpp"
#include "../constants.h"
#include "../element/box.h"

#include "QThread"

typedef ::expression::Expression Expression;
typedef ::expression::Variable Variable;
typedef ::numeric::interval Interval;

class Fractal : public QThread
{
    Q_OBJECT
public:
    Fractal();
    ~Fractal();

    virtual void generate() = 0;
    virtual void draw() = 0;

    virtual void run();

    double distZ(double x);
    double distZE(double x);
    double distZO(double x);
    double distZDM(double x);
};

#endif // FRACTAL_H
